/*class MyArray {
    public Object[] array = new Object[10];
    public void setValue(int pos, Object val) {
        array[pos] = val;
    }

    public Object getValue(int pos) {
        return array[pos];
    }
}*/


//<T> 当前类 是一个泛型类 它只是一个占位符
class MyArray<T> {
    //public T[] array = new T[10];
    public Object[] array = new Object[10];
    public void setValue(int pos, T val) {
        array[pos] = val;
    }

    public T getValue(int pos) {
        return (T)array[pos];
    }

    public  Object[] getArray() {
        return array;//当返回数组时，Object[]数组
    }
}

public class Test2 {
    public static void main(String[] args) {
        MyArray<Integer> myArray = new MyArray<>();//此时就可以省略后面的泛型
        myArray.setValue(0,10);
        myArray.setValue(1,20);
        int a = myArray.getValue(1);//不用进行强制类型转换
        System.out.println(a);

        MyArray<String> myArray1 = new MyArray<String>();
        myArray1.setValue(0,"abcd");
        myArray1.setValue(1,"efg");
        String ret = myArray1.getValue(1);
        System.out.println(ret);
    }
}
